package graph;

/*
 * @(#)BullsEye.java	1.5  98/12/03
 *
 * Copyright 1998 by Sun Microsystems, Inc.,
 * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information
 * of Sun Microsystems, Inc. ("Confidential Information").  You
 * shall not disclose such Confidential Information and shall use
 * it only in accordance with the terms of the license agreement
 * you entered into with Sun.
 */

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Ellipse2D;
import java.util.Random;

import javax.imageio.ImageIO;
import javax.swing.*;

import java.io.*;
import zclTool.*;

/**
 * The BullsEye class renders Ellipses with colors set by alpha values.
 */
public class BullsEye extends JApplet {

	public void init() {
		setBackground(Color.white);
	}

	public void drawDemo(int w, int h, Graphics2D g2) {

		Color reds[] = { Color.red.darker(), Color.red };

		/*
		 * fills 18 Ellipse2D.Float objects, which get smaller as N increases
		 */
		for (int N = 0; N < 18; N++) {
			float i = (N + 2) / 2.0f;
			float x = (float) (5 + i * (w / 2 / 10));
			float y = (float) (5 + i * (h / 2 / 10));
			float ew = (w - 10) - (i * w / 10);
			float eh = (h - 10) - (i * h / 10);

			/*
			 * assigns a higher value of alpha, corresponding to a higher value
			 * of N
			 */
			float alpha = (N == 0) ? 0.1f : 1.0f / (19.0f - N);

			// sets the ellipse to a darker version of red if N < 16
			if (N >= 16) {
				g2.setColor(reds[N - 16]);
			} else {
				g2.setColor(new Color(0f, 0f, 0f, alpha));
			}
			g2.fill(new Ellipse2D.Float(x, y, ew, eh));
		}
	}

	public void paint(Graphics g) {
		Random randomNumbers = new Random();
		Graphics2D g3 = (Graphics2D) g;
		int sum = 0;
		g3.setColor(Color.black);
		try {
			g3.setColor(Color.red);
			for (int i = 0; i < 10; i++) {
				for (int j = 1; j < 1000; j++) {
					g3.draw(new Ellipse2D.Double(i * 100, j, 0, 0));
				}
			}
			for (int j = 0; j < 10; j++) {
				for (int i = 1; i < 1000; i++) {
					g3.draw(new Ellipse2D.Double(i, j * 100, 0, 0));
				}
			}
			DelimitedReader dr = new DelimitedReader("drawMatrix");
			String line[];
			while ((line = dr.read()) != null) {
				int id1 = Integer.parseInt(line[0]);
				int id2 = Integer.parseInt(line[1]);

				double val = Double.parseDouble(line[2]);
				int s = 255 - (int) Math.round(255 * val);
				Color c = new Color(s, s, s);
				// if(id1 == id2){
				// System.out.println(s);
				// }


				// Color c= new Color(0,0,0);
				g3.setColor(c);
				g3.draw(new Ellipse2D.Double(id1, id2, 0, 0));
			}
			// System.out.println(sum);
			dr.close();
			// draw some lines

		} catch (Exception e) {

		}
		// for (int i = 0; i < 1000; i++) {
		// for (int j = 0; j < 1000; j++) {
		// int s = Math.round(255 * randomNumbers.nextFloat());
		// Color c = new Color(s, s, s);
		// g3.setColor(c);
		// g3.draw(new Ellipse2D.Double(i, j, 0, 0));
		// }
		//
		// }

	}

	public void paint2(Graphics g) {
		Random randomNumbers = new Random();
		Graphics2D g3 = (Graphics2D) g;
		g3.setColor(Color.black);
		double i = 0;
		double k = 0;
		Color c = new Color(200, 200, 200);
		while (i < 180 && k < 600)

		{
			k += 0.001;
			g3.setColor(c);
			g3
					.draw(new Ellipse2D.Double(k + 100, 150 + 50 * Math.cos(i),
							0, 0));
			g3
					.draw(new Ellipse2D.Double(k + 100,
							500 + 200 * Math.sin(i), 0, 0));
			// try {
			// Robot a = new Robot();
			// // a.delay(5);
			// } catch (Exception io) {
			// }
			// Color color = new Color( randomNumbers.nextInt( 256 ),
			// randomNumbers.nextInt( 256 ), randomNumbers.nextInt( 256 ) );

			i += 0.0001;
		}

	}

	public static void main(String argv[]) {
		final BullsEye demo = new BullsEye();
		demo.init();
		JFrame f = new JFrame("Java 2D(TM) Demo - BullsEye");
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});
		f.getContentPane().add("Center", demo);
		f.pack();
		f.setSize(new Dimension(1200, 1200));
		f.show();
	}
	
	
	
}
